package org.dept.service;

import feign.hystrix.FallbackFactory;
import org.dept.pojo.Dept;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

import java.util.List;

//服务熔断： 服务端 某个超时或者异常，一起熔断，就像保险丝
//服务降级： 客服端 从整体网站请求负载考虑，当某个服务熔断或者关闭之后，
//          服务将不再被调用，此时在客户端，我们可以准备一个FallbackFactory
//          返回一个默认的值（缺省值），整体的服务水平下降了，但是至少能用，比直接挂掉强
//降级
@Component
public class DeptClientServiceFallbackFactory implements FallbackFactory {

    public DeptClientService create(Throwable throwable) {
        return new DeptClientService() {
            public Dept select(int id) {
                return new Dept()
                        .setId(id)
                        .setName("id=>"+id+"没有对应的信息，客户端提供了降级的信息，这个服务现在一级被关闭")
                        .setDbname("没有数据");
            }

            public List<Dept> dList() {
                return null;
            }

            public int addDept(Dept dept) {
                return 0;
            }
        };
    }
}
